home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc / Sample Code / Sample Editors⁄Viewers / Cappuccino / Source / CappuccinoAction.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-11  |  6.2 KB  |  292 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        CappuccinoAction.h
  3.  
  4.     Contains:    Classes for undo/redo support.
  5.  
  6.     Written by:    Troy Gaul
  7.     
  8.     Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  9. */
  10.  
  11. #ifndef _CAPPUCCINOACTION_
  12. #define _CAPPUCCINOACTION_
  13.  
  14. //------------------------------------------------------------------------------
  15. // Forward declarations
  16. //------------------------------------------------------------------------------
  17.  
  18. class CAction;
  19. class Cappuccino;
  20. class CCappuccinoContent;
  21. class CSettings;
  22.  
  23. class Environment;
  24. class ODSession;
  25.  
  26. //------------------------------------------------------------------------------
  27. // ActionCode
  28. //------------------------------------------------------------------------------
  29.  
  30. typedef ODUShort ActionCode;
  31.  
  32. //------------------------------------------------------------------------------
  33. // CAction
  34. //------------------------------------------------------------------------------
  35.  
  36. class CAction {
  37.  
  38. public:
  39.  
  40.     virtual ~CAction();
  41.     
  42.     // -- Performing --
  43.     
  44.     void Perform(Environment* ev) { this->HandleDo(ev); }
  45.     
  46.     virtual void HandleDo(Environment* ev);
  47.     
  48.     virtual void HandleUndo(Environment* ev);
  49.     
  50.     virtual void HandleRedo(Environment* ev);
  51.     
  52.     // -- Utility --
  53.     
  54.     ODActionData* CreateActionData();
  55.  
  56.     static CAction* GetActionStateAction(ODActionData* actionState);
  57.  
  58. protected:
  59.     
  60.     CAction(Cappuccino* part, ActionCode);
  61.  
  62.     // -- Performing (override these for subclasses) --
  63.     
  64.     virtual void Do(Environment* ev) = 0;
  65.     
  66.     virtual void Undo(Environment* ev) = 0;
  67.     
  68.     virtual void Redo(Environment* ev) = 0;
  69.  
  70.     // -- Misc. --
  71.  
  72.     virtual ODName* GetUndoRedoName(Environment* ev, ODBoolean isUndo);
  73.     
  74.     virtual void AddToActionHistory(Environment* ev, 
  75.                                     ODActionType actionType = kODSingleAction);
  76.     
  77. protected:
  78.  
  79.     Cappuccino*        fPart;
  80.     ODSession*        fSession;
  81.     ActionCode        fActionCode;
  82. };
  83.  
  84. //------------------------------------------------------------------------------
  85. // CTextChangeAction
  86. //------------------------------------------------------------------------------
  87.  
  88. class CTextChangeAction : public CAction {
  89.  
  90.     typedef CAction Inherited;
  91.  
  92. public:
  93.  
  94.     CTextChangeAction(Cappuccino* part, ActionCode,
  95.                       CCappuccinoContent* newContent);
  96.     
  97.     virtual ~CTextChangeAction();
  98.     
  99.     // -- Performing --
  100.  
  101.     virtual void Do(Environment* ev);
  102.     
  103.     virtual void Undo(Environment* ev);
  104.     
  105.     virtual void Redo(Environment* ev);
  106.     
  107. protected:
  108.  
  109.     CCappuccinoContent*        fPreviousContent;
  110.     CCappuccinoContent*        fCurrentContent;
  111. };
  112.  
  113. //------------------------------------------------------------------------------
  114. // CClipboardTextChangeAction
  115. //------------------------------------------------------------------------------
  116.  
  117. class CClipboardTextChangeAction : public CTextChangeAction {
  118.  
  119.     typedef CTextChangeAction Inherited;
  120.  
  121. public:
  122.  
  123.     CClipboardTextChangeAction(Cappuccino* part, ActionCode, ODCloneKind, 
  124.                                CCappuccinoContent*);
  125.     
  126.     virtual ~CClipboardTextChangeAction();
  127.     
  128.     // -- Performing --
  129.     
  130.     virtual void HandleDo(Environment* ev);
  131.     
  132.     virtual void HandleUndo(Environment* ev);
  133.     
  134.     virtual void HandleRedo(Environment* ev);
  135.  
  136. private:
  137.  
  138.     ODUpdateID        fUpdateID;
  139.     ODCloneKind        fCloneKind;
  140.  
  141. };
  142.  
  143. //------------------------------------------------------------------------------
  144. // CCutAction
  145. //------------------------------------------------------------------------------
  146.  
  147. class CCutAction : public CClipboardTextChangeAction {
  148.  
  149.     typedef CClipboardTextChangeAction Inherited;
  150.  
  151. public:
  152.  
  153.     CCutAction(Cappuccino* part);
  154.  
  155. };
  156.  
  157. //------------------------------------------------------------------------------
  158. // CPasteAction
  159. //------------------------------------------------------------------------------
  160.  
  161. class CPasteAction : public CClipboardTextChangeAction {
  162.  
  163.     typedef CClipboardTextChangeAction Inherited;
  164.  
  165. public:
  166.  
  167.     CPasteAction(Cappuccino* part, CCappuccinoContent*);
  168.  
  169. };
  170.  
  171. //------------------------------------------------------------------------------
  172. // CClearAction
  173. //------------------------------------------------------------------------------
  174.  
  175. class CClearAction : public CTextChangeAction {
  176.  
  177.     typedef CTextChangeAction Inherited;
  178.  
  179. public:
  180.  
  181.     CClearAction(Cappuccino* part);
  182.  
  183. };
  184.  
  185. //------------------------------------------------------------------------------
  186. // CDropAction
  187. //------------------------------------------------------------------------------
  188.  
  189. class CDropAction : public CTextChangeAction {
  190.  
  191.     typedef CTextChangeAction Inherited;
  192.  
  193. public:
  194.  
  195.     CDropAction(Cappuccino* part, CCappuccinoContent*);
  196.  
  197. };
  198.  
  199. //------------------------------------------------------------------------------
  200. // CDragBeginAction
  201. //------------------------------------------------------------------------------
  202.  
  203. class CDragBeginAction : public CAction {
  204.  
  205.     typedef CAction Inherited;
  206.  
  207. public:
  208.  
  209.     CDragBeginAction(Cappuccino* part);
  210.     
  211.     // -- Performing --
  212.     
  213.     virtual void HandleDo(Environment* ev);
  214.  
  215. protected:
  216.  
  217.     virtual void Do(Environment* ev) { }
  218.  
  219.     virtual void Undo(Environment* ev) { }
  220.  
  221.     virtual void Redo(Environment* ev) { }
  222. };
  223.  
  224. //------------------------------------------------------------------------------
  225. // CDragEndAction
  226. //------------------------------------------------------------------------------
  227.  
  228. class CDragEndAction : public CAction {
  229.  
  230.     typedef CAction Inherited;
  231.  
  232. public:
  233.  
  234.     CDragEndAction(Cappuccino* part);
  235.     
  236.     // -- Performing --
  237.     
  238.     virtual void HandleDo(Environment* ev);
  239.     
  240. protected:
  241.  
  242.     virtual void Do(Environment* ev) { }
  243.  
  244.     virtual void Undo(Environment* ev) { }
  245.  
  246.     virtual void Redo(Environment* ev) { }
  247. };
  248.  
  249. //------------------------------------------------------------------------------
  250. // CSetTextAction
  251. //------------------------------------------------------------------------------
  252.  
  253. class CSetTextAction : public CTextChangeAction {
  254.  
  255.     typedef CTextChangeAction Inherited;
  256.  
  257. public:
  258.  
  259.     CSetTextAction(Cappuccino* part, CCappuccinoContent*);
  260.  
  261. };
  262.  
  263. //------------------------------------------------------------------------------
  264. // CSettingsChangeAction
  265. //------------------------------------------------------------------------------
  266.  
  267. class CSettingsChangeAction : public CAction {
  268.  
  269.     typedef CAction Inherited;
  270.  
  271. public:
  272.  
  273.     CSettingsChangeAction(Cappuccino* part, CSettings* newSettings);
  274.     
  275.     virtual ~CSettingsChangeAction();
  276.     
  277.     // -- Performing --
  278.  
  279.     virtual void Do(Environment* ev);
  280.     
  281.     virtual void Undo(Environment* ev);
  282.     
  283.     virtual void Redo(Environment* ev);
  284.     
  285. protected:
  286.  
  287.     CSettings*        fPreviousSettings;
  288.     CSettings*        fCurrentSettings;
  289. };
  290.  
  291.  
  292. #endif